import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace EdubaseSchoolTeachingUnitApi {
  /** 教学单位表（院、系、学部、组）信息 */
  export interface SchoolTeachingUnit {
    id: number; // 主键
    parentId: number; // 父级单位ID（自关联）
    name: string; // 教学单位名称（如：计算机学院、高一年级组）
    code: string; // 教学单位编码
    orgType: string; // 教学单位类型
    leaderId: number; // 负责人id
    leaderName: string; // 负责人姓名
    leaderIdcard: string; // 负责人身份证
    leaderCellphone: string; // 负责人手机
    leaderTelphone: string; // 负责人固定电话
    status: number; // 状态
    sort: number; // 排序号
    remarks: string; // 描述
    briefIntroduction: string; // 简介（富文本）
    areaCode: number; // 所在行政区划代码
    metadata: string; // 其他参数
    schoolId: number; // 学校id
    campusId: number; // 校区id
    distabledOrgType?: boolean; // 禁用组织类型
  }
  export interface EduOrgCheckVO {
    isSchool?: boolean; // 是否是学校相关组织
    showSchool?: boolean; // 是否显示学校
    showCampus?: boolean; // 是否显示校区
    showCollege?: boolean; // 是否显示学院
    showDepartment?: boolean; // 是否显示系
    showFaculty?: boolean; // 是否显示学部
    showGroup?: boolean; // 是否显示组
    schoolId?: number; // 学校id
    campusId?: number; // 校区id
    collegeId?: number; // 学院id
    facultyId?: number; // 学部id
    departmentId?: number; // 系id
    groupId?: number; // 组id
    id?: number; // 组织id
    name?: string; // 单位名称
    orgTypeLast?: string; // 组织类型
    childrenOrgTypeLast?: string; // 子组织类型
    fictitious?: boolean; // 是否虚拟组织
    parentId?: number; // 父级单位ID（自关联）
    parentName?: string; // 父级单位名称
    areaCode?: number; // 所在行政区划代码
    areaName?: string; // 所在行政区划名称
    children?: EduOrgCheckVO[]; // 子组织列表
    campusDictList?: EduOrgCheckVO[]; // 校区列表
    collegeDictList?: EduOrgCheckVO[]; // 学院列表
    departmentDictList?: EduOrgCheckVO[]; // 系列表
    facultyDictList?: EduOrgCheckVO[]; // 学部列表
    groupDictList?: EduOrgCheckVO[]; // 组列表
    periodDictList?: number[]; // 学段列表
  }
}

/** 查询教学单位表（院、系、学部、组）分页 */
export function getSchoolTeachingUnitPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    PageResult<EdubaseSchoolTeachingUnitApi.SchoolTeachingUnit>
  >('/edu/base/school-teaching-unit/page', data, { desensitize, encrypt });
}

/** 查询教学单位表（院、系、学部、组）简单分页 */
export function getSchoolTeachingUnitSamplePage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    PageResult<EdubaseSchoolTeachingUnitApi.SchoolTeachingUnit>
  >('/edu/base/school-teaching-unit/page-sample', data, {
    desensitize,
    encrypt,
  });
}
/** 查询教学单位表（院、系、学部、组）列表 */
export function getSchoolTeachingUnitSampleList(
  data: any,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<EdubaseSchoolTeachingUnitApi.SchoolTeachingUnit[]>(
    '/edu/base/school-teaching-unit/list-sample',
    data,
    {
      desensitize,
      encrypt,
    },
  );
}
/** 查询教学单位表（院、系、学部、组）详情 */
export function getSchoolTeachingUnit(id: number, desensitize?: boolean) {
  return requestClient.get<EdubaseSchoolTeachingUnitApi.SchoolTeachingUnit>(
    `/edu/base/school-teaching-unit/get`,
    {
      params: {
        id,
      },
      desensitize,
    },
  );
}
/** 校验学校单位情况 */
export function checkOrg(orgId?: number) {
  return requestClient.get<EdubaseSchoolTeachingUnitApi.EduOrgCheckVO>(
    `/edu/base/school-teaching-unit/check-org`,
    {
      params: {
        orgId,
      },
    },
  );
}
/** 新增教学单位表（院、系、学部、组） */
export function createSchoolTeachingUnit(
  data: EdubaseSchoolTeachingUnitApi.SchoolTeachingUnit,
) {
  return requestClient.post('/edu/base/school-teaching-unit/create', data);
}

/** 修改教学单位表（院、系、学部、组） */
export function updateSchoolTeachingUnit(
  data: EdubaseSchoolTeachingUnitApi.SchoolTeachingUnit,
) {
  return requestClient.put('/edu/base/school-teaching-unit/update', data);
}

/** 删除教学单位表（院、系、学部、组） */
export function deleteSchoolTeachingUnit(id: number) {
  return requestClient.delete(`/edu/base/school-teaching-unit/delete?id=${id}`);
}

/** 批量删除教学单位表（院、系、学部、组） */
export function deleteSchoolTeachingUnitList(ids: number[]) {
  return requestClient.delete(
    `/edu/base/school-teaching-unit/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出教学单位表（院、系、学部、组） */
export function exportSchoolTeachingUnit(params: any) {
  return requestClient.downloadPost(
    '/edu/base/school-teaching-unit/export-excel',
    params,
  );
}
